/**
 * 
 */
package com.br.negocio.vo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

/**
 * CompraServicoVO.java
 *
 * @author Ricardo Passinho 
 */
public class CompraServicoVO implements Serializable{
	
	@Id
	@Column(name = "cod_compra")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "compra_seq")
	private int codigo;
	
//	@ManyToMany
//	@JoinTable(name = "compra_servico",
//			joinColumns = @JoinColumn(name = "cod_compra", referencedColumnName = "id"),
//			inverseJoinColumns = @JoinColumn(name="cod_servico", referencedColumnName = "id"))
//	private List servico;

	@OneToMany(fetch = FetchType.EAGER)
	@JoinColumn(name = "cod_fornecedor")
	@Fetch(FetchMode.JOIN)
	private FornecedorVO fornecedoVO;
	
	@OneToMany(fetch = FetchType.EAGER)
	@JoinColumn(name = "cod_cliente")
	@Fetch(FetchMode.JOIN)
	private ClienteVO clienteVO;
	
	@OneToMany(fetch = FetchType.EAGER)
	@JoinColumn(name = "cod_servico")
	@Fetch(FetchMode.JOIN)
	private ServicoVO servicoVO;
	
	@Column(name = "vl_net")
	private float vl_net;
	
	@Column(name = "vl_pagar")
	private float vl_pagar;
	
	@Column(name = "vl_total")
	private float vl_total_pagar;
	
	@Column(name = "observacoes", length = 200)
	private String observacoes;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "dtChegada")
	private Date dtChegada;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "dtSaida", nullable = true)
	private Date dtSaida;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_criacao")
	private Date dataCriacao;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_alteracao")
	private Date dataAlteracao;

	/**
	 * @return the codigo
	 */
	public int getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo the codigo to set
	 */
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the fornecedoVO
	 */
	public FornecedorVO getFornecedoVO() {
		return fornecedoVO;
	}

	/**
	 * @param fornecedoVO the fornecedoVO to set
	 */
	public void setFornecedoVO(FornecedorVO fornecedoVO) {
		this.fornecedoVO = fornecedoVO;
	}

	/**
	 * @return the clienteVO
	 */
	public ClienteVO getClienteVO() {
		return clienteVO;
	}

	/**
	 * @param clienteVO the clienteVO to set
	 */
	public void setClienteVO(ClienteVO clienteVO) {
		this.clienteVO = clienteVO;
	}

	/**
	 * @return the servicoVO
	 */
	public ServicoVO getServicoVO() {
		return servicoVO;
	}

	/**
	 * @param servicoVO the servicoVO to set
	 */
	public void setServicoVO(ServicoVO servicoVO) {
		this.servicoVO = servicoVO;
	}

	/**
	 * @return the vl_net
	 */
	public float getVl_net() {
		return vl_net;
	}

	/**
	 * @param vl_net the vl_net to set
	 */
	public void setVl_net(float vl_net) {
		this.vl_net = vl_net;
	}

	/**
	 * @return the vl_pagar
	 */
	public float getVl_pagar() {
		return vl_pagar;
	}

	/**
	 * @param vl_pagar the vl_pagar to set
	 */
	public void setVl_pagar(float vl_pagar) {
		this.vl_pagar = vl_pagar;
	}

	/**
	 * @return the vl_total_pagar
	 */
	public float getVl_total_pagar() {
		return vl_total_pagar;
	}

	/**
	 * @param vl_total_pagar the vl_total_pagar to set
	 */
	public void setVl_total_pagar(float vl_total_pagar) {
		this.vl_total_pagar = vl_total_pagar;
	}

	/**
	 * @return the observacoes
	 */
	public String getObservacoes() {
		return observacoes;
	}

	/**
	 * @param observacoes the observacoes to set
	 */
	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	/**
	 * @return the dtChegada
	 */
	public Date getDtChegada() {
		return dtChegada;
	}

	/**
	 * @param dtChegada the dtChegada to set
	 */
	public void setDtChegada(Date dtChegada) {
		this.dtChegada = dtChegada;
	}

	/**
	 * @return the dtSaida
	 */
	public Date getDtSaida() {
		return dtSaida;
	}

	/**
	 * @param dtSaida the dtSaida to set
	 */
	public void setDtSaida(Date dtSaida) {
		this.dtSaida = dtSaida;
	}

	/**
	 * @return the dataCriacao
	 */
	public Date getDataCriacao() {
		return dataCriacao;
	}

	/**
	 * @param dataCriacao the dataCriacao to set
	 */
	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	/**
	 * @return the dataAlteracao
	 */
	public Date getDataAlteracao() {
		return dataAlteracao;
	}

	/**
	 * @param dataAlteracao the dataAlteracao to set
	 */
	public void setDataAlteracao(Date dataAlteracao) {
		this.dataAlteracao = dataAlteracao;
	}

//	public List getServico() {
//		return servico;
//	}
//
//	public void setServico(List servico) {
//		this.servico = servico;
//	}
}
